home *** CD-ROM | disk | FTP | other *** search
/ PC Professionell 2005 June / PCpro_2005_06.ISO / files / opensource / amc / amc_install.exe / {app} / Scripts / Amazon Image (FR).ifs < prev    next >
Encoding:
Text File  |  2005-03-12  |  13.4 KB  |  443 lines

  1. (***************************************************
  2.  
  3. Ant Movie Catalog importation script
  4. www.antp.be/software/moviecatalog/
  5.  
  6. [Infos]
  7. Authors=ScorEpioN
  8. Title=Amazon.fr (Image Only)
  9. Description=Grande Image et titre Amazon.fr
  10. Site=http://www.amazon.fr
  11. Language=FR
  12. Version=03 du 07/03/2005
  13. Requires=3.5.0
  14. Comments=
  15. License=This program is free software; you can redistribute it and/or modify it under the  terms of the GNU General Public License as published by the Free Software Foundation;  either version 2 of the License, or (at your option) any later version. |
  16. GetInfo=1
  17.  
  18. [Options]
  19. Type de Lancement=0|0|0=Demande le titre avant de lancer le script|1=Ne demande pas le titre avant de lancer le script|2=Cherche la meilleur image sans confirmation
  20. Format du Titre=3|3|0=Titre en minuscule|1=Titre en majuscule|2=PremiΦre lettre du titre en majuscule|3=PremiΦre lettre de chaque mot du titre en majuscule
  21. Recherche sur le titre=0|0|0=Traduit|1=Original
  22.  
  23. ***************************************************)
  24.  
  25. program Amazon_FR;
  26.  
  27. var
  28.   MovieName, Address : string;
  29.   compteur, premiereExecution: Integer;
  30.  
  31. //------------------------------------------------------------------------------
  32. // VERIFIER LA VERSION DU SCRIPT
  33. //------------------------------------------------------------------------------
  34.  
  35. procedure verifVersion();
  36. var
  37.    Line, NewVersion : String;
  38.    BeginPos, EndPos : Integer;
  39. begin
  40.   Line := GetPage('http://forum.antp.be/phpbb2/viewtopic.php?t=1453');
  41.   BeginPos := pos('TELECHARGER LE SCRIPT AMAZON.FR (IMAGE ONLY) v', Line);
  42.   delete(Line,1, BeginPos+45);
  43.   EndPos := pos('du', Line);
  44.   NewVersion := copy(Line, 1, EndPos - 2);
  45.   if (ShowConfirmation('La derniΦre version est la '+NewVersion+'. Cliquer sur ''''OUI'''' pour la tΘlΘcharger.') = True) then
  46.   begin
  47.     Launch('iexplore.exe','http://www.ifrance.com/ricoland/Amazon%20Image%20(FR).ifs');
  48.   end else
  49.     exit;
  50. end;
  51.  
  52. //------------------------------------------------------------------------------
  53. // MET LE TITRE AU BON FORMAT
  54. //------------------------------------------------------------------------------
  55.  
  56. function formatTitre(titre : String; option : Integer) : string;
  57. begin
  58.   if (option = 0) then
  59.   begin
  60.      titre := AnsiLowerCase(titre);
  61.   end else if (option = 1) then
  62.   begin
  63.      titre := AnsiUpperCase(titre);
  64.   end else if (option = 2) then
  65.   begin
  66.      titre := AnsiUpFirstLetter(titre);
  67.   end else if (option = 3) then
  68.   begin
  69.      titre := AnsiMixedCase(titre,' -');
  70.   end;
  71.   result := titre;
  72. end;
  73.  
  74. //------------------------------------------------------------------------------
  75. // RECUPERE GRANDE IMAGE AMAZON.FR
  76. //------------------------------------------------------------------------------
  77.  
  78. procedure imageAmazon(title : String);
  79. var
  80.   adresseRecherche, Line : String;
  81.   StartPos: Integer;
  82. begin
  83.   PickTreeClear;
  84.   adresseRecherche := 'http://www.amazon.fr/exec/obidos/search-handle-url/index=dvd-fr&field-keywords='+UrlEncode(title);
  85.   Line := GetPage(adresseRecherche);
  86.   if pos('satisfaisante pour votre recherche sur', Line) > 0 then
  87.   begin
  88.     exit;
  89.   end else
  90.   if (pos('Sur ce DVD', Line) > 0) or (pos('Amazon.fr : DVD:', Line) > 0) then
  91.   begin
  92.       importAmazon(Line);
  93.   end else
  94.   if pos('résultats au total pour', Line) > 0 then
  95.   begin
  96.       StartPos := pos('résultats au total pour', Line);
  97.       delete(Line, 1, StartPos);
  98.       recupAmazon(Line, title);
  99.   end;
  100. end;
  101.  
  102. //------------------------------------------------------------------------------
  103. // CREATION DE LA LISTE DE RESULTAT
  104. //------------------------------------------------------------------------------
  105.  
  106. procedure recupAmazon(Line, title : String);
  107. var
  108.    StartPos: Integer;
  109. begin
  110.   if (GetOption('Type de Lancement') = 0) or (GetOption('Type de Lancement') = 1) then
  111.   begin
  112.    PickTreeAdd('Films trouvΘs pour ' + title + ' :', '');
  113.    StartPos := pos('<a href=/exec/obidos/ASIN/', Line);
  114.    repeat
  115.      delete(Line, 1, StartPos+length('<a href=/exec/obidos/ASIN/'));
  116. //ajoute les films
  117.      PickTreeAdd(recupTitle(Line) , recupImage(Line));
  118.      StartPos := pos('http://images-eu.amazon.com/images/P/', Line);
  119.      delete(Line, 1, StartPos-1);
  120.      StartPos := pos('<b>', Line);
  121.      delete(Line, 1, StartPos-1);
  122.      StartPos := pos('<a href=/exec/obidos/ASIN/', Line);
  123.   until (StartPos = 0);
  124.  
  125.   PickTreeAdd(' ', '');
  126.   PickTreeAdd('Verifier si vous avez la derniΦre version', 'version');
  127.   PickTreeAdd('Pour me contacter', 'contact');
  128.   
  129.   begin
  130.     if PickTreeExec(Address)=true then
  131.     begin
  132.       if (Address = 'version') then
  133.       begin
  134.         verifVersion();
  135.       end else if (Address = 'contact') then
  136.       begin
  137.         Launch('iexplore.exe','http://forum.antp.be/phpbb2/viewtopic.php?t=1453');
  138.       end else
  139.       begin
  140.         if CanSetPicture then
  141.         begin
  142.           GetPicture(Address);
  143.         end;
  144.         //translated title
  145.         if CanSetField(fieldTranslatedTitle) then
  146.           SetField(fieldTranslatedTitle, formatTitre(MovieName,GetOption('Format du Titre')));
  147.       end;
  148.     end;
  149.   end;
  150.   end else if (GetOption('Type de Lancement') = 2) then
  151.   begin
  152.     if compareTitle(MovieName,recupTitle(Line)) = 'OK' then
  153.    begin
  154.      importAmazon(Line);
  155.    end else
  156.    begin
  157.      trouveTitle(Line,title);
  158.    end;
  159.   end;
  160. end;
  161.  
  162.  
  163. //------------------------------------------------------------------------------
  164. // RECUPERE L'ADRESSE DE L'IMAGE
  165. //------------------------------------------------------------------------------
  166.  
  167. function recupImage(Line : String) : String;
  168. var
  169.    ImageAddress : String;
  170.    StartPos: Integer;
  171. begin
  172.      StartPos := pos('http://images-eu.amazon.com/images/P/', Line);
  173.      delete(Line, 1, StartPos-1);
  174.      ImageAddress := copy(Line, 0, pos('"', Line) - 1);
  175.      ImageAddress := StringReplace(ImageAddress, 'THUMBZZZ', 'LZZZZZZZ');
  176.      result := ImageAddress;
  177. end;
  178.  
  179. //------------------------------------------------------------------------------
  180. // RECUPERE LE TITRE
  181. //------------------------------------------------------------------------------
  182.  
  183. function recupTitle(Line : String) : String;
  184. var
  185.    title : String;
  186.    StartPos: Integer;
  187. begin
  188.      StartPos := pos('http://images-eu.amazon.com/images/P/', Line);
  189.      delete(Line, 1, StartPos-1);
  190.      StartPos := pos('<b>', Line);
  191.      delete(Line, 1, StartPos-1);
  192.      title := copy(Line, 1, pos('</b></a>', Line)-1);
  193.      HTMLRemoveTags(title);
  194.      title := StringReplace(title, #13#10, '');
  195.      result := title;
  196. end;
  197.  
  198. //------------------------------------------------------------------------------
  199. // IMPORTE L'IMAGE AMAZON
  200. //------------------------------------------------------------------------------
  201.  
  202. procedure importAmazon(Line : String);
  203. var
  204.    ImageAddress : String;
  205.    StartPos: Integer;
  206. begin
  207.      StartPos := pos('http://images-eu.amazon.com/images/P/', Line);
  208.      delete(Line, 1, StartPos-1);
  209.      ImageAddress := copy(Line, 0, pos('"', Line) - 1);
  210.      ImageAddress := StringReplace(ImageAddress, 'THUMBZZZ', 'LZZZZZZZ');
  211.      Sleep(500);
  212.      GetPicture(ImageAddress);
  213. end;
  214.  
  215.  
  216. //------------------------------------------------------------------------------
  217. // SUPPRIME LES ACCENTS
  218. //------------------------------------------------------------------------------
  219.  
  220. function supprimeAccents(NomFilm : String) : String;
  221. begin
  222.      NomFilm := StringReplace(NomFilm, 'Θ', 'e');
  223.      NomFilm := StringReplace(NomFilm, 'Φ', 'e');
  224.      NomFilm := StringReplace(NomFilm, 'α', 'a');
  225.      NomFilm := StringReplace(NomFilm, 'τ', 'c');
  226.      NomFilm := StringReplace(NomFilm, '∙', 'u');
  227.      NomFilm := StringReplace(NomFilm, 'δ', 'e');
  228.      NomFilm := StringReplace(NomFilm, 'Ω', 'e');
  229.      NomFilm := StringReplace(NomFilm, '⌠', 'o');
  230.      delete(NomFilm, pos(' - ',NomFilm), length(NomFilm));
  231.      if (pos(', ',NomFilm) > 0) then
  232.         delete(NomFilm, 1, pos(', ',NomFilm)+1);
  233.      if (pos('(',NomFilm) > 0) then
  234.         delete(NomFilm, pos('(',NomFilm), length(NomFilm));
  235.      if (pos(':',NomFilm) > 0) then
  236.         delete(NomFilm, pos(':',NomFilm), length(NomFilm));
  237.      result := trim(NomFilm);
  238. end;
  239.  
  240. //------------------------------------------------------------------------------
  241. // VERIFIE LE RESULTAT AMAZON
  242. //------------------------------------------------------------------------------
  243.  
  244. function compareTitle(titleAllo, title : String) : String;
  245. begin
  246.      title := supprimeAccents(trim(AnsiLowerCase(title)));
  247.      titleAllo := supprimeAccents(trim(AnsiLowerCase(titleAllo)));
  248.      if (title = titleAllo) then
  249.      begin
  250.        result := 'OK';
  251.      end else
  252.      begin
  253.        result := 'KO';
  254.      end;
  255. end;
  256.  
  257. //------------------------------------------------------------------------------
  258. // TROUVE LE BON TITRE SI LE PREMIER N'EST PAS LE BON
  259. //------------------------------------------------------------------------------
  260.  
  261. procedure trouveTitle(Line, title : String);
  262. var
  263.    StartPos: Integer;
  264.    oK : String;
  265. begin
  266.    StartPos := pos('<a href=/exec/obidos/ASIN/', Line);
  267.    repeat
  268.      delete(Line, 1, StartPos+length('<a href=/exec/obidos/ASIN/'));
  269.      oK := compareTitle(title,recupTitle(Line));
  270.      if oK = 'OK' then
  271.        importAmazon(Line);
  272.      StartPos := pos('http://images-eu.amazon.com/images/P/', Line);
  273.      delete(Line, 1, StartPos-1);
  274.      StartPos := pos('<b>', Line);
  275.      delete(Line, 1, StartPos-1);
  276.      StartPos := pos('<a href=/exec/obidos/ASIN/', Line);
  277.   until (StartPos = 0) or  (oK = 'OK');
  278. end;
  279.  
  280. //------------------------------------------------------------------------------
  281. // NETTOIE LE TITRE DU FICHIER POUR AVOIR LE TITRE DE FILM
  282. //------------------------------------------------------------------------------
  283.  
  284. function cleanTitle(title : String) : string;
  285. var
  286.   i,j, fin : Integer;
  287.   temp : String;
  288.  
  289. begin
  290.   title := AnsiUpperCase(title);
  291.  
  292.   if title <> '' then
  293.   begin
  294. // Nettoie les tags fichiers, merci Atmosfear pour les tags
  295.   i:=pos('.DVD',title);
  296.   if i <> 0 then
  297.   begin
  298.     title := copy(title,1,i-1);
  299.   end;
  300.   i:=pos('.DIVX',title);
  301.   if i <> 0 then
  302.   begin
  303.     title := copy(title,1,i-1);
  304.   end;
  305.   i:=pos('.FREN',title);
  306.   if i <> 0 then
  307.   begin
  308.     title := copy(title,1,i-1);
  309.   end;
  310.   i:=pos('.GERM',title);
  311.   if i <> 0 then
  312.   begin
  313.     title := copy(title,1,i-1);
  314.   end;
  315.   i:=pos('.INT',title);
  316.   if i <> 0 then
  317.   begin
  318.     title := copy(title,1,i-1);
  319.   end;
  320.   i:=pos('.LIM',title);
  321.   if i <> 0 then
  322.   begin
  323.     title := copy(title,1,i-1);
  324.   end;
  325.   i:=pos('.PROP',title);
  326.   if i <> 0 then
  327.   begin
  328.     title := copy(title,1,i-1);
  329.   end;
  330.   i:=pos('.REPACK',title);
  331.   if i <> 0 then
  332.   begin
  333.     title := copy(title,1,i-1);
  334.   end;
  335.   i:=pos('.SUBB',title);
  336.   if i <> 0 then
  337.   begin
  338.     title := copy(title,1,i-1);
  339.   end;
  340.   i:=pos('.UNSUB',title);
  341.   if i <> 0 then
  342.   begin
  343.     title := copy(title,1,i-1);
  344.   end;
  345.   i:=pos('.WS',title);
  346.   if i <> 0 then
  347.   begin
  348.     title := copy(title,1,i-1);
  349.   end;
  350.   i:=pos('.XVID',title);
  351.   if i <> 0 then
  352.   begin
  353.     title := copy(title,1,i-1);
  354.   end;
  355.   i:=pos('.AC3',title);
  356.   if i <> 0 then
  357.   begin
  358.     title := copy(title,1,i-1);
  359.   end;
  360.   i:=pos('.UNRAT',title);
  361.   if i <> 0 then
  362.   begin
  363.     title := copy(title,1,i-1);
  364.   end;
  365.  
  366.    title := StringReplace(title, '.', ' ');
  367.    title := StringReplace(title, ',', ' ');
  368.    title := StringReplace(title, ':', '');
  369.    title := StringReplace(title, '-', '');
  370.    title := StringReplace(title, '  ', ' ');
  371.  
  372.    i := 0;
  373. // Nettoie les tags de team
  374.    if (pos('(',title) <> 0) then
  375.    begin
  376.      i := pos('(',title);
  377.      temp := copy(title,0,i-1);
  378.      j := pos(')',title);
  379.      fin := Length(title);
  380.      title := temp + copy(title,j+1,fin);
  381.    end;
  382.  
  383.    if (pos('[',title) <> 0) then
  384.    begin
  385.      i := pos('[',title);
  386.      temp := copy(title,1,i-1);
  387.      j := pos(']',title);
  388.      fin := Length(title);
  389.      title := temp + copy(title,j+1,fin);
  390.    end;
  391.  
  392.    title := AnsiLowerCase(title);
  393.    title := AnsiUpFirstLetter(title);
  394.    title := AnsiMixedCase(title,' -');
  395.   end;
  396.    result := title;
  397. end;
  398.  
  399. //------------------------------------------------------------------------------
  400. // PROGRAMME PRINCIPAL
  401. //------------------------------------------------------------------------------
  402.  
  403. begin
  404.   if CheckVersion(3,5,0) then
  405.   begin
  406.     if (GetOption('Recherche sur le titre') = 0) then
  407.     begin
  408.       MovieName := GetField(fieldTranslatedTitle);
  409.       if MovieName = '' then
  410.         MovieName := GetField(fieldOriginalTitle);
  411.     end else
  412.     if (GetOption('Recherche sur le titre') = 1) then
  413.     begin
  414.       MovieName := GetField(fieldOriginalTitle);
  415.       if MovieName = '' then
  416.         MovieName := GetField(fieldTranslatedTitle);
  417.     end;
  418.     MovieName := cleanTitle(MovieName);
  419.     if (GetOption('Type de Lancement') = 0) then
  420.     begin
  421.       if Input('Amazon.fr (Image Only) by ScorEpioN', 'Entrez le titre du film :', MovieName) then
  422.       begin
  423.         imageAmazon(MovieName);
  424.       end;
  425.     end else
  426.     begin
  427.       if (premiereExecution = 0) then
  428.       begin
  429.           premiereExecution := -1;
  430.           if (ShowConfirmation('Vous allez executer le script sans confirmation, cliquer sur ''''OUI'''' pour continuer') = True) then
  431.           begin
  432.             imageAmazon(MovieName);
  433.           end else
  434.             exit;
  435.       end else
  436.       begin
  437.           imageAmazon(MovieName);
  438.       end;
  439.     end;
  440.   end else
  441.     ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)');
  442. end.
  443.